package com.bawei.lib_common.utils

import java.text.SimpleDateFormat
import java.util.*
/**
 *author：yjk
 *description:
 *date：2025/6/12
*/
object TimeUtils {
    private val timeFormatter by lazy {
        SimpleDateFormat("HH:mm:ss", Locale.getDefault())
    }

    // 获取当前时间（兼容所有API版本）
    fun getCurrentTime(): String {
        return timeFormatter.format(Date())
    }
    fun getCurrentDateFormatted(): String {
        val sdf = SimpleDateFormat("yyyy年M月d日", Locale.CHINA)
        return sdf.format(Date()) // 输出示例：2025年6月12日
    }
    fun getCurrentDate(): String {
        val sdf = SimpleDateFormat("yyyy/M/d", Locale.getDefault())
        return sdf.format(Date()) // 输出示例：2025/6/12
    }
    fun formatDateToChinese(input: String): String {
        val inputFormat = SimpleDateFormat("yyyy/M/d", Locale.getDefault())
        val outputFormat = SimpleDateFormat("yyyy年MM月dd日", Locale.getDefault())
        val date = inputFormat.parse(input) ?: return input // 解析失败时返回原字符串
        return outputFormat.format(date)
    }

    fun isMoreThan24Hours(savedTime: String): Boolean {
        // 1. 定义时间格式（时:分:秒）
        val timeFormat = SimpleDateFormat("HH:mm:ss", Locale.getDefault())

        // 2. 获取今天的日期 + 存储的时间
        val today = Calendar.getInstance()
        val savedDate = timeFormat.parse(savedTime) ?: return false

        // 3. 构建完整日期时间（假设存储时间是今天）
        val savedCalendar = Calendar.getInstance().apply {
            set(Calendar.HOUR_OF_DAY, savedDate.hours)
            set(Calendar.MINUTE, savedDate.minutes)
            set(Calendar.SECOND, savedDate.seconds)
        }

        // 4. 计算时间差（毫秒）
        val diffMillis = Calendar.getInstance().timeInMillis - savedCalendar.timeInMillis
        val hoursDiff = diffMillis / (1000 * 60 * 60)  // 转换为小时

        // 5. 判断是否超过24小时
        return hoursDiff >= 24
    }

    // 解析时间字符串（反向操作）
    fun parseTime(timeString: String): Date? {
        return try {
            timeFormatter.parse(timeString)
        } catch (e: Exception) {
            null
        }
    }
}

// 使用示例
val currentTime = TimeUtils.getCurrentTime()